package com.vben.system.biz.controller;

import cn.hutool.core.collection.CollUtil;
import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
import com.vben.common.core.util.R;
import com.vben.system.api.dto.role.SysRoleDeleteDTO;
import com.vben.system.api.dto.role.SysRolePageDTO;
import com.vben.system.api.entity.SysRole;
import com.vben.system.biz.service.SysRoleService;
import jakarta.annotation.Resource;
import org.springframework.web.bind.annotation.*;

import java.util.List;

/**
 * 角色管理
 *
 * @author sunnfun
 */
@RestController
@RequestMapping("/role")
public class SysRoleController {

    @Resource
    private SysRoleService sysRoleService;

    /**
     * 分页查询角色列表
     */
    @GetMapping("/page")
    public R<Page<SysRole>> page(SysRolePageDTO pageDTO) {
        return R.ok(sysRoleService.pageVO(pageDTO));
    }

    /**
     * 根据角色id查询角色详情
     */
    @GetMapping("/detail/{roleId}")
    public R<SysRole> info(@PathVariable("roleId") Long roleId) {
        return R.ok(sysRoleService.getRoleById(roleId));
    }

    /**
     * 保存角色
     */
    @PostMapping("/save")
    public R<Boolean> save(@RequestBody SysRole sysRole) {
        return R.ok(sysRoleService.saveRole(sysRole));
    }

    /**
     * 修改角色
     */
    @PutMapping("/update")
    public R<Boolean> update(@RequestBody SysRole sysRole) {
        return R.ok(sysRoleService.updateRole(sysRole));
    }

    /**
     * 删除角色
     */
    @PostMapping("/remove")
    public R<Boolean> remove(@RequestBody SysRoleDeleteDTO deleteDTO) {
        List<Long> roleIds = deleteDTO.getRoleIds();
        if (CollUtil.isEmpty(roleIds)) {
            return R.ok();
        }
        return R.ok(sysRoleService.removeBatchByIds(roleIds));
    }

}
